//
// Created by Administrator on 2021/10/13.
//

#ifndef HELLOOPENGL_MATRIXN_H
#define HELLOOPENGL_MATRIXN_H
#include <vector>
#include <string>
#include "../exception/HelloAssert.h"
#include "../core/String.h"
#include "../util/Log.h"

class MatrixN {
public:
    int row;
    int col;
    std::vector<float> data;

    /**
     * 默认构造
     * @param _row 行数
     * @param _col 列数
     */
    MatrixN(int _row, int _col);

    /**
     * 转为字符串
     * @return 字符串
     */
    String toString();

    /**
     * 置为单位矩阵
     */
    void identity();

    /**
     * 初始化数据
     * @param m 矩阵数列
     */
    void init(const std::vector<float>& m);

    /**
     * 乘法
     * @param m 矩阵
     * @return 乘法后结果
     */
    MatrixN operator *(const MatrixN& m) const;

    /**
     * 乘法
     * @param m1 矩阵1
     * @param m2 矩阵2
     * @return
     */
    static MatrixN multiply(const MatrixN& m1, const MatrixN& m2);
};


#endif //HELLOOPENGL_MATRIXN_H
